package com.example.util;

import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value="封装统一返回数据格式", description="封装统一返回数据格式")
public class R<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "状态")
    private Integer code; // 状态码

    @ApiModelProperty(value = "消息提示")
    private String message; // 消息提示

    @ApiModelProperty(value = "数据")
    private T data; // 数据部分，可以是任意类型，这里我们特指登录成功后的用户信息

    // 成功状态时使用的构造方法
    public static <T> R<T> success(String message, T data) {
        return new R<>(200, message, data);
    }

    // 失败状态时使用的构造方法
    public static <T> R<T> fail(String message) {
        return new R<>(500, message, null);
    }
}
